#ifndef __MOBILELIB_DIRECTWRAPPER_DEVICE_H__
#define __MOBILELIB_DIRECTWRAPPER_DEVICE_H__

#include "DirectShowWrapper.h"

BEGIN_DIRECTSHOWWRAPPER_NAMESPACE

class DeviceEnumerator;
class VideoCaptureManager;

/// <summary>
	///
	/// </summary>
class CaptureDevice
{
	/// <summary>
	///
	/// </summary>
	friend class CaptureDeviceEnumerator;

public:
	/// <summary>
	///
	/// </summary>
	~CaptureDevice();

	/// <summary>
	///
	/// </summary>
	const _bstr_t GetName() const;

	/// <summary>
	///
	/// </summary>
	IBaseFilterPtr BindDeviceFilter() const;

private:
	/// <summary>
	///
	/// </summary>
	explicit CaptureDevice(const IMonikerPtr& pMoniker);

private:
	/// <summary>
	///
	/// </summary>
	IBaseFilterPtr m_pBaseFilter;

	/// <summary>
	///
	/// </summary>
	IBaseFilterPtr m_pSampleGrabber;	

	/// <summary>
	///
	/// </summary>
	IMonikerPtr m_pMonikerPtr;

	/// <summary>
	///
	/// </summary>
	IPropertyBagPtr m_pPropertyBagPtr;
};

END_DIRECTSHOWWRAPPER_NAMESPACE

#endif